/**
 * miss.js
 * version 1.0.1
 * subilme
 * Signed-off-by: miss <1241804731@qq.com>
 * */
 
 // 判断传入的参数是否为空
 function if_null(...arr) {
	// 判断传入的值是否为空
	let flag = false;
	arr.forEach(e => {
		if(e == '' || e == undefined) {
			flag = true;
		}
	})
	// 返回是否为空
	if(flag) {
		return 'null';
	}else {
		return 'noNull';
	}
}


/*
	format 时间格式
	不带参数默认 年月日
	参数true 为年月日时分秒
*/
function getDate(format = false) {
	// myDate.getYear(); 												//获取当前年份(2位)
	// myDate.getFullYear(); 										//获取完整的年份(4位,1970-????)
	// myDate.getMonth(); 												//获取当前月份(0-11,0代表1月)
	// myDate.getDate(); 												//获取当前日(1-31)
	// myDate.getDay(); 													//获取当前星期X(0-6,0代表星期天)
	// myDate.getTime(); 												//获取当前时间(从1970.1.1开始的毫秒数)
	// myDate.getHours(); 												//获取当前小时数(0-23)
	// myDate.getMinutes(); 											//获取当前分钟数(0-59)
	// myDate.getSeconds(); 											//获取当前秒数(0-59)
	// myDate.getMilliseconds(); 								//获取当前毫秒数(0-999)
	// myDate.toLocaleDateString(); 							//获取当前日期
	let myDate = new Date();
	let myDayTime = myDate.getFullYear()+ '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate() + ' ' + myDate.getHours() + ':' + myDate.getMinutes() + ':' + myDate.getSeconds();
	let myDay = myDate.getFullYear()+ '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate();
	if(format) {
		return myDayTime;
	}else {
		return myDay;
	}
}

/*
	删除重复值（数组去重）
	@param	要去重的数组
	@return	去重后的数组
*/
function repeatRemove(array) {
	array.filter((item,idx,arr) => arr.indexOf(item) === idx);
	// or
	const nonUnique = [...new Set(array)];

	return nonUnique;
}

/*
 对数组进行排序
 @param		// 数组
 @return	// 排序后的数组
*/
function arraySort(arr) {
	arr.sort( (a,b) => {return a -b});
	return arr;
};


/*
 对二维数组进行排序
 @param		// 二维数组
 @param		// 需要参考二维数组的对第几个元素进行排序
 @return	// 排序后的二维数组
*/
function twoArraySort(twoArr,i) {
	twoArr.sort( (a,b) => {return a[i] -b[i]});
	return twoArr;
};

/*
	冒泡排序算法
	@param	//数组
	@return	// 排序后的数组
*/
function bubbleSort(arr) {
    let tmp;
    for(let i = 0;i < arr.length - 1; i++) {
        for(let k=0;k < arr.length - i - 1; k++){
            if(arr[k] > arr[k+1]){
                tmp = arr[k];
                arr[k] = arr[k+1];
                arr[k+1] = tmp;
            }
        }
    }
    return arr;
}

/**
 * 数组对象分类
 * 根据数组的 id 进行分类
 * @params array
 * @return newArray
 * */
function classify(arr){
	let map = {};
	let myArr = [];
	for(let i = 0; i < arr.length; i++){
	    if(!map[arr[i].id]){
	        myArr.push({
	            id: arr[i].id,
	            data: [arr[i]]
	        });
	        map[arr[i].id] = arr[i]
	    } else {
	        for(let j = 0; j < myArr.length; j++){
	            if(arr[i].id === myArr[j].id){
	                myArr[j].data.push(arr[i]);
	                break
	            }
	        }
	    }
	}
	return myArr
}

/**
 * 判断是否为 ie 浏览器，false 是ie true 不是ie 
 * 也可以精确的 ie 的具体版本
 */
function IEVersion() { 
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器 
    var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器 
    var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1; 
    if(isIE) { 
        var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); 
        reIE.test(userAgent); 
        var fIEVersion = parseFloat(RegExp["$1"]); 
        if(fIEVersion == 7) { 
            return false;
        } else if(fIEVersion == 8) { 
			return false;
		} else if(fIEVersion == 9) { 
			return false;
		} else if(fIEVersion == 10) { 
			return false;
		} else { 
			return false;   //IE版本<=7 
		} 
	} else if(isEdge) { 
		return true;   //edge 
	} else if(isIE11) { 
		return false;  //IE11 
	}else{ 
		return true;   //不是ie浏览器 
	} 
}

/**
 * 根据数组对象的值进行分组
 * @param 数组对象
 * @param 进行分组的值
 * @return arr
 */
unique(data, key) {
        let lastData = [];
        data.forEach(item => {
          let status = lastData.some(value => value[key] == item[key]);
          if (!status) {
            item.number = 0;
            item.value0 = item.value;
            lastData.push(item);
          } else {
            lastData.forEach((value, index) => {
              if (value[key] === item[key]) {
                value.number += 1;
                value['value' + value.number] = item.value;
              }
            });
          }
        });
        return lastData;
      }
// 添加时间格式方法
Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

/**
 * 字符串转驼峰命名
 * @param String ('font-size')
 * */
function toHump(str) {
	for(let i = 0; i < str.length; i++) {
		let cur = str.substr(i, 1)
		if(cur === '-') {
			let left = str.substr(0, i)
			let rig = str.substr(i+2)
			let cont = str.substr(i+1, 1).toUpperCase()
			
			str =  left + cont + rig
		}
	}
	return str
}

/**
 * 获取 url 参数 以对象形式返回
 * @param url:string
 * @return object
 * */
function toParams(url) {
	let obj = {}
	str = url.split('?')
	if(str.length === 1) return false
	param = str[1].split('&')
	param.forEach(el => {
		obj[el.split('=')[0]] = el.split('=')[1]
	})
	return obj
}